package com.tedu.api;

import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import org.junit.Test;

/**
 * java万物皆对象--->真的是面向对象--->不全是【八大基本数据类型】
 * 对象【类---创建对象，调用属性、方法】
 * 包装类不可修改：final修饰类，无法继承
 * int       Integer     java.long   继承Number
 * long       Long       java.long   继承Number
 * double     Double     java.long   继承Number
 * short      Short      java.long   继承Number
 * float      Float      java.long   继承Number
 * byte       Byte       java.long   继承Number
 * char       Char       java.long   继承Object
 * boolean    Boolean    java.long   继承Object
 */
public class Packing {
    @Test
public void test(){
        int i=1;//不是面向对象
        Integer a=new Integer(i);//面向对象
        a.toString();

    }
    /**
     * 包装类API
     *抽象类Number 父类:Integer、Long、Double、Short、Float、Byte
     *  xxxValue抽象方法:把基本数据类型转换成包装类的方法
     * intValue方法	返回int变量
     * LongValue方法	返回Long变量
     * doubleValue方法 返回double变量 shortValue方法返回short变量
     * floatValue方法 返回float变量
     * byteValue方法	返回bYTe变量
     *需求：把以上的6个数据类型，转换包装类，输出基本数据类型
     */
@Test
    public void textValue(){
    //int//包---包装类---取出---从包装类获取基础数据类型
    Integer i=new Integer("123");
    int is=i.intValue();//包装类  类型转换为int返回

    Integer t=new Integer("123");
    int si=i.intValue();

    System.out.println("Integer包装类："+(is==si));
    //== 对比 值
    System.out.println("Integer包装类："+i.equals(t));
    //.equals 对比对象 确定对象是否有值【包装类--实际值】 有实际值 对比
    //其他五个基础数据类型包装类--打包、拆包
    /**
     * public class Person(){
     * Integer id;
     * Double money;
     * }
     * id.intValue();
     * money.intValue();
     *
     */
     Long l=new Long("111");
     long ls=l.longValue();
     Long o=new Long("111");
     long sl=l.longValue();
    System.out.println("Long包装类:"+(ls=sl));
    System.out.println("Long包装类:"+l.equals(o));
}

/**
 * xxxValue抽象方法-------六个基础类型的包装类
 *                       包装类.value0f("对应类型")
 *                       静态方法【打包、拆包】
 * 打包:对应包装类中存对应的类
 * 拆包:对应包装类、类型，取出
 */
    @Test
    public void testValueOf() {
        int i = Integer.valueOf("123");//类名点出来:静态方法[Number抽象
        double d = Double.valueOf("123,123");
        boolean b = Boolean.valueOf("true");
        char c = Character.valueOf('i');
    }

/**
 * parseXXX   静态方法【重点：Servlet JavaWeb】
 * 作用：将字符串转换为对应的类型：
 * 参数--字符串---给字符串转换为对应数据类型
 * 注意：字符串随便写，不可以随便解析成对应类型
 */
@Test
    public void testParseXXX(){
    //1.把基本数据类型转换为字符串方法 2.转换为字符串
String s=String.valueOf("2");
//2.把字符串转换为基础数据类型方法   需要解析出来
    String s2="2x";
    System.out.println(s2+"打桩");
    //int i=Integer.parseInt(s2);
    //NumberFormatException 赋值格式异常：解析对应类型出错
    //需求s3-s6正确解析出来
    String s3="123.123";
    float f=Float.parseFloat(s3);
    String s4="true";
    boolean b=Boolean.parseBoolean(s4);
    String s5="10L";//无法加l表示long 符合三种类型Integer，Byte，Short
    //long l=Long.parseLong(s5);
    String s6="a";//Character 字符类型包装类：无法解析
    byte byt=Byte.parseByte(s6);
    System.out.println(byt);
    //总结：1.字符类，无法正确的解析成对应类型，不存在char字符
    //     2.字面量L/F,认为这是一个字符串，解析失败
}
/**
 * 包装类 自动拆装箱
 * JDK1.5 新特性 2004
 * JDK1.5之前没有自动拆装箱
 */
    @Test
    public void test01(){
//JDK1.5之前
        Integer in = Integer.valueOf("1");//输入类型转换为Integer
        int i=in.intValue();//把包装好的类型，基础数据类型取出
        //JDK1.5之后 定义方法编译器认可，并非JVM虚拟机认可
        Integer it = 1;//装箱
        int is=it;//拆箱
        //自动拆装箱实际上，吧拆箱与装箱的步骤交给idea执行
    }
























}
